<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Polygon mesh</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Polygon_mesh"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Polygon_mesh rootpage-Polygon_mesh skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Polygon mesh</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p>In <a href="3D_computer_graphics" title="3D computer graphics">3D computer graphics</a> and <a href="Solid_modeling" title="Solid modeling">solid modeling</a>, a <b>polygon mesh</b> is a collection of <b><style data-mw-deduplicate="TemplateStyles:r1238216509">
/* start https://en.wikipedia.org/ */
.mw-parser-output .vanchor>:target~.vanchor-text{background-color:#b1d2ff}@media screen{html.skin-theme-clientpref-night .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .vanchor>:target~.vanchor-text{background-color:#0f4dc9}}
/* end https://en.wikipedia.org/ */
</style><span class="vanchor"><span class="vanchor-text">vertices</span></span></b>, <b><span class="vanchor"><span class="vanchor-text">edge</span></span>s</b> and <b><span class="vanchor"><span class="vanchor-text">face</span></span>s</b> that defines the shape of a <a href="Polyhedron" title="Polyhedron">polyhedral</a> object's <a href="Surface" title="Surface">surface</a>. It simplifies <a href="Rendering_(computer_graphics)" title="Rendering (computer graphics)">rendering</a>, as in a <a href="Wire-frame_model" title="Wire-frame model">wire-frame model</a>. The <a href="Face_(geometry)" title="Face (geometry)">faces</a> usually consist of <a href="Triangles" class="mw-redirect" title="Triangles">triangles</a> (<a href="Triangle_mesh" title="Triangle mesh">triangle mesh</a>), <a href="Quadrilaterals" class="mw-redirect" title="Quadrilaterals">quadrilaterals</a> (quads), or other simple <a href="Convex_polygon" title="Convex polygon">convex polygons</a> (<a href="N-gons" class="mw-redirect" title="N-gons">n-gons</a>). A polygonal mesh may also be more generally composed of <a href="Concave_polygon" title="Concave polygon">concave polygons</a>, or even <a href="Polygon_with_holes" title="Polygon with holes">polygons with holes</a>.
</p><p>The study of <a href="Polygon_(computer_graphics)" title="Polygon (computer graphics)">polygon</a> meshes is a large sub-field of <a href="Computer_graphics" title="Computer graphics">computer graphics</a> (specifically 3D computer graphics) and <a href="Geometric_modeling" title="Geometric modeling">geometric modeling</a>. Different representations of polygon meshes are used for different applications and goals. The variety of operations performed on meshes includes <a href="Boolean_logic" class="mw-redirect" title="Boolean logic">Boolean logic</a> (<a href="Constructive_solid_geometry" title="Constructive solid geometry">Constructive solid geometry</a>), <a href="Subdivision_surfaces" class="mw-redirect" title="Subdivision surfaces">smoothing</a>, and <a href="Level_of_detail_(computer_graphics)" title="Level of detail (computer graphics)">simplification</a>. Algorithms also exist for <a href="Ray_tracing_(graphics)" title="Ray tracing (graphics)">ray tracing</a>, <a href="Collision_detection" title="Collision detection">collision detection</a>, and <a href="Rigid-body_dynamics" class="mw-redirect" title="Rigid-body dynamics">rigid-body dynamics</a> with polygon meshes. If the mesh's edges are rendered instead of the faces, then the model becomes a <a href="Wire-frame_model" title="Wire-frame model">wireframe model</a>.
</p><p>Several methods exist for <a href="Mesh_generation" title="Mesh generation">mesh generation</a>, including the <a href="Marching_cubes" title="Marching cubes">marching cubes</a> algorithm.<sup id="cite_ref-journalarticle_1-0" class="reference"><a href="#cite_note-journalarticle-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p><a href="Volume_mesh" class="mw-redirect" title="Volume mesh">Volumetric meshes</a> are distinct from polygon meshes in that they explicitly represent both the surface and interior region of a structure, while polygon meshes only explicitly represent the surface (the volume is implicit).
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Elements">Elements</h2></div>
<p><span class="mw-default-size" typeof="mw:File"></span>
</p><p>Objects created with polygon meshes must store different types of elements. These include vertices, edges, faces, polygons and surfaces. In many applications, only vertices, edges and either faces or polygons are stored. A renderer may support only 3-sided faces, so polygons must be constructed of many of these, as shown above. However, many renderers either support quads and higher-sided polygons, or are able to convert polygons to triangles on the fly, making it unnecessary to store a mesh in a <a href="Surface_triangulation" title="Surface triangulation">triangulated</a> form.
</p>
<dt id="vertex"><dfn>vertex</dfn></dt> <dd>A position (usually in 3D space) along with other information such as color, normal vector and texture coordinates.</dd>
<dt id="edge"><dfn>edge</dfn></dt> <dd>A connection between two vertices.</dd>
<dt id="face"><dfn>face</dfn></dt> <dd>A closed set of edges, in which a <i>triangle face</i> has three edges, and a <i>quad face</i> has four edges. A <b>polygon</b> is a <a href="Coplanar" class="mw-redirect" title="Coplanar">coplanar</a> set of faces. In systems that support multi-sided faces, polygons and faces are equivalent. However, most rendering hardware supports only 3- or 4-sided faces, so polygons are represented as multiple faces. Mathematically, a polygonal mesh may be considered an <a href="Unstructured_grid" title="Unstructured grid">unstructured grid</a>, or undirected graph, with additional properties of geometry, shape and topology.</dd>
<dt id="surfaces"><dfn>surfaces</dfn></dt> <dd>More often called <b>smoothing groups</b>, are useful, but not required to group smooth regions. Consider a cylinder with caps, such as a soda can. For smooth shading of the sides, all <a href="Surface_normal" class="mw-redirect" title="Surface normal">surface normals</a> must point horizontally away from the center, while the normals of the caps must point straight up and down. Rendered as a single, <a href="Phong_shading" title="Phong shading">Phong-shaded</a> surface, the crease vertices would have incorrect normals. Thus, some way of determining where to cease smoothing is needed to group smooth parts of a mesh, just as polygons group 3-sided faces. As an alternative to providing surfaces/smoothing groups, a mesh may contain other data for calculating the same data, such as a splitting angle (polygons with normals above this threshold are either automatically treated as separate smoothing groups or some technique such as splitting or chamfering is automatically applied to the edge between them. Additionally, very high resolution meshes are less subject to issues that would require smoothing groups, as their polygons are so small as to make the need irrelevant. Further, another alternative exists in the possibility of simply detaching the surfaces themselves from the rest of the mesh. Renderers do not attempt to smooth edges across noncontiguous polygons.</dd>
<dt id="groups"><dfn>groups</dfn></dt>
<dd>Some mesh formats contain <b>groups</b>, which define separate elements of the mesh, and are useful for determining separate sub-objects for <a href="Skeletal_animation" title="Skeletal animation">skeletal animation</a> or separate actors for non-skeletal animation. </dd>
<dt id="materials"><dfn>materials</dfn></dt>
<dd>Generally <b>materials</b> will be defined, allowing different portions of the mesh to use different <a href="Shaders" class="mw-redirect" title="Shaders">shaders</a> when rendered. </dd>
<dt id="uv_coordinates"><dfn><a href="UV_coordinates" class="mw-redirect" title="UV coordinates">UV coordinates</a></dfn></dt>
<dd>Most mesh formats also support some form of <b><a href="UV_coordinates" class="mw-redirect" title="UV coordinates">UV coordinates</a></b> which are a separate 2d representation of the mesh "unfolded" to show what portion of a two-dimensional <a href="Texture_map" class="mw-redirect" title="Texture map">texture map</a> to apply to different polygons of the mesh. It is also possible for meshes to contain other such vertex <i>attribute</i> information such as colour, tangent vectors, <a href="Weighting" class="mw-redirect" title="Weighting">weight maps</a> to control <a href="Skeletal_animation" title="Skeletal animation">animation</a>, etc. (sometimes also called <i>channels</i>).</dd>
<div class="mw-heading mw-heading2"><h2 id="Representations">Representations</h2></div>
<p>Polygon meshes may be represented in a variety of ways, using different methods to store the vertex, edge and face data. These include:
</p>
<dt id="face-vertex_meshes"><dfn>Face-vertex meshes</dfn></dt> <dd>A simple list of <a href="Vertex_(graph_theory)" title="Vertex (graph theory)">vertices</a>, and a set of polygons that point to the vertices it uses.</dd>
<dt id="winged-edge_meshes"><dfn><a href="Winged_edge" title="Winged edge">Winged-edge</a></dfn></dt> <dd>in which each edge points to two vertices, two faces, and the four (clockwise and counterclockwise) edges that touch them. Winged-edge meshes allow constant time traversal of the surface, but with higher storage requirements.</dd>
<dt id="half-edge_meshes"><dfn><a href="Half-edge_data_structure" class="mw-redirect" title="Half-edge data structure">Half-edge meshes</a></dfn></dt> <dd>Similar to winged-edge meshes except that only half the edge traversal information is used. (see <a rel="nofollow" class="external text" href="http://www.openmesh.org/">OpenMesh</a>)</dd>
<dt id="quad-edge_meshes"><dfn><a href="Quad-edge" title="Quad-edge">Quad-edge meshes</a></dfn></dt> <dd>which store edges, half-edges, and vertices without any reference to polygons. The polygons are implicit in the representation, and may be found by traversing the structure. Memory requirements are similar to half-edge meshes.</dd>
<dt id="corner-tables"><dfn>Corner-tables</dfn></dt> <dd>which store vertices in a predefined table, such that traversing the table implicitly defines polygons. This is in essence the <a href="Triangle_fan" title="Triangle fan">triangle fan</a> used in hardware graphics rendering. The representation is more compact, and more efficient for retrieving polygons, but operations to change polygons are slow. Furthermore, corner-tables do not represent meshes completely. Multiple corner-tables (triangle fans) are needed to represent most meshes.</dd>
<dt id="vertex-vertex_meshes"><dfn>Vertex-vertex meshes</dfn></dt><dd>A VV mesh represents only vertices, which point to other vertices. Both the edge and the face information is implicit in the representation. However, the simplicity of the representation does not allow for many efficient operations to be performed on meshes.</dd><p>
Each of the representations above have particular advantages and drawbacks, further discussed in Smith (2006).<sup id="cite_ref-Smith(2006)_2-0" class="reference"><a href="#cite_note-Smith(2006)-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
The choice of the data structure is governed by the application, the performance required, size of the data, and the operations to be performed. For example, it is easier to deal with triangles than general polygons, especially in <a href="Computational_geometry" title="Computational geometry">computational geometry</a>. For certain operations it is necessary to have a fast access to topological information such as edges or neighboring faces; this requires more complex structures such as the winged-edge representation. For hardware rendering, compact, simple structures are needed; thus the corner-table (triangle fan) is commonly incorporated into low-level rendering APIs such as <a href="DirectX" title="DirectX">DirectX</a> and <a href="OpenGL" title="OpenGL">OpenGL</a>.
</p><div class="mw-heading mw-heading3"><h3 id="Vertex-vertex_meshes">Vertex-vertex meshes</h3></div>
<p><b>Vertex-vertex meshes</b> represent an object as a set of vertices connected to other vertices. This is the simplest representation, but not widely used since the face and edge information is implicit. Thus, it is necessary to traverse the data in order to generate a list of faces for rendering. In addition, operations on edges and faces are not easily accomplished.
</p><p>However, VV meshes benefit from small storage space and efficient morphing of shape. The above figure shows a four-sided box as represented by a VV mesh. Each vertex indexes its neighboring vertices. The last two vertices, 8 and 9 at the top and bottom center of the "box-cylinder", have four connected vertices rather than five. A general system must be able to handle an arbitrary number of vertices connected to any given vertex.
</p><p>For a complete description of VV meshes see Smith (2006).<sup id="cite_ref-Smith(2006)_2-1" class="reference"><a href="#cite_note-Smith(2006)-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Face-vertex_meshes">Face-vertex meshes</h3></div>
<p><b>Face-vertex meshes</b> represent an object as a set of faces and a set of vertices. This is the most widely used mesh representation, being the input typically accepted by modern graphics hardware.
</p><p>Face-vertex meshes improve on VV mesh for modeling in that they allow explicit lookup of the vertices of a face, and the faces surrounding a vertex. The above figure shows the "box-cylinder" example as an FV mesh. Vertex v5 is highlighted to show the faces that surround it. Notice that, in this example, every face is required to have exactly 3 vertices. However, this does not mean every vertex has the same number of surrounding faces.
</p><p>For rendering, the face list is usually transmitted to the GPU as a set of indices to vertices, and the vertices are sent as position/color/normal structures (in the figure, only position is given). This has the benefit that changes in shape, but not geometry, can be dynamically updated by simply resending the vertex data without updating the face connectivity.
</p><p>Modeling requires easy traversal of all structures. With face-vertex meshes it is easy to find the vertices of a face. Also, the vertex list contains a list of faces connected to each vertex. Unlike VV meshes, both faces and vertices are explicit, so locating neighboring faces and vertices is constant time. However, the edges are implicit, so a search is still needed to find all the faces surrounding a given face. Other dynamic operations, such as splitting or merging a face, are also difficult with face-vertex meshes.
</p>
<div class="mw-heading mw-heading3"><h3 id="Winged-edge_meshes">Winged-edge meshes</h3></div>
<p>Introduced by Baumgart in 1975, <b>winged-edge meshes</b> explicitly represent the vertices, faces, and edges of a mesh. This representation is widely used in modeling programs to provide the greatest flexibility in dynamically changing the mesh geometry, because split and merge operations can be done quickly. Their primary drawback is large storage requirements and increased complexity due to maintaining many indices. A good discussion of implementation issues of Winged-edge meshes may be found in the book <i>Graphics Gems II</i>.
</p><p>Winged-edge meshes address the issue of traversing from edge to edge, and providing an ordered set of faces around an edge. For any given edge, the number of outgoing edges may be arbitrary. To simplify this, winged-edge meshes provide only four, the nearest clockwise and counter-clockwise edges at each end. The other edges may be traversed incrementally. The information for each edge therefore resembles a butterfly, hence "winged-edge" meshes. The above figure shows the "box-cylinder" as a winged-edge mesh. The total data for an edge consists of 2 vertices (endpoints), 2 faces (on each side), and 4 edges (winged-edge).
</p><p>Rendering of winged-edge meshes for graphics hardware requires generating a Face index list, which is usually done only when the geometry changes. Winged-edge meshes are ideally suited for dynamic geometry, such as subdivision surfaces and interactive modeling, since changes to the mesh can occur locally. Traversal across the mesh, as might be needed for collision detection, can be accomplished efficiently.
</p><p>See Baumgart (1975) for more details.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Render_dynamic_meshes">Render dynamic meshes</h3></div>
<p>Winged-edge meshes are not the only representation which allows for dynamic changes to geometry. A new representation which combines winged-edge meshes and face-vertex meshes is the <b>render dynamic mesh</b>, which explicitly stores both, the vertices of a face and faces of a vertex (like FV meshes), and the faces and vertices of an edge (like winged-edge).
</p><p>Render dynamic meshes requires slightly less storage space than standard winged-edge meshes, and can be directly rendered by graphics hardware since the face list contains an index of vertices. In addition, traversal from vertex to face is explicit (constant time), as is from face to vertex. RD meshes do not require the four outgoing edges since these can be found by traversing from edge to face, then face to neighboring edge.
</p><p>RD meshes benefit from the features of winged-edge meshes by allowing for geometry to be dynamically updated.
</p><p>See Tobler & Maierhofer (WSCG 2006) for more details.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Summary_of_mesh_representation">Summary of mesh representation</h2></div>
<table class="wikitable" style="margin:auto;">
<tbody><tr>
<th colspan="2">Operation
</th>
<th>Vertex-vertex
</th>
<th>Face-vertex
</th>
<th>Winged-edge
</th>
<th>Render dynamic
</th></tr>
<tr>
<td align="center">V-V
</td>
<td align="center">All vertices around vertex
</td>
<td align="center">Explicit
</td>
<td align="center">V → f1, f2, f3, ... → v1, v2, v3, ...
</td>
<td align="center">V → e1, e2, e3, ... → v1, v2, v3, ...
</td>
<td align="center">V → e1, e2, e3, ... → v1, v2, v3, ...
</td></tr>
<tr>
<td align="center">E-F
</td>
<td align="center">All edges of a face
</td>
<td align="center">F(a,b,c) → {a,b}, {b,c}, {a,c}
</td>
<td align="center">F → {a,b}, {b,c}, {a,c}
</td>
<td align="center">Explicit
</td>
<td align="center">Explicit
</td></tr>
<tr>
<td align="center">V-F
</td>
<td align="center">All vertices of a face
</td>
<td align="center">F(a,b,c) → {a,b,c}
</td>
<td align="center">Explicit
</td>
<td align="center">F → e1, e2, e3 → a, b, c
</td>
<td align="center">Explicit
</td></tr>
<tr>
<td align="center">F-V
</td>
<td align="center">All faces around a vertex
</td>
<td align="center">Pair search
</td>
<td align="center">Explicit
</td>
<td align="center">V → e1, e2, e3 → f1, f2, f3, ...
</td>
<td align="center">Explicit
</td></tr>
<tr>
<td align="center">E-V
</td>
<td align="center">All edges around a vertex
</td>
<td align="center">V → {v,v1}, {v,v2}, {v,v3}, ...
</td>
<td align="center">V → f1, f2, f3, ... → v1, v2, v3, ...
</td>
<td align="center">Explicit
</td>
<td align="center">Explicit
</td></tr>
<tr>
<td align="center">F-E
</td>
<td align="center">Both faces of an edge
</td>
<td align="center">List compare
</td>
<td align="center">List compare
</td>
<td align="center">Explicit
</td>
<td align="center">Explicit
</td></tr>
<tr>
<td align="center">V-E
</td>
<td align="center">Both vertices of an edge
</td>
<td align="center">E(a,b) → {a,b}
</td>
<td align="center">E(a,b) → {a,b}
</td>
<td align="center">Explicit
</td>
<td align="center">Explicit
</td></tr>
<tr>
<td align="center">Flook
</td>
<td align="center">Find face with given vertices
</td>
<td align="center">F(a,b,c) → {a,b,c}
</td>
<td align="center">Set intersection of v1,v2,v3
</td>
<td align="center">Set intersection of v1,v2,v3
</td>
<td align="center">Set intersection of v1,v2,v3
</td></tr>
<tr>
<th colspan="2" rowspan="3">Storage size
</th>
<td>V*avg(V,V)
</td>
<td>3F + V*avg(F,V)
</td>
<td>3F + 8E + V*avg(E,V)
</td>
<td>6F + 4E + V*avg(E,V)
</td></tr>
<tr>
<td colspan="4">Example with 10 vertices, 16 faces, 24 edges:
</td></tr>
<tr>
<td>10 * 5 = 50
</td>
<td>3*16 + 10*5 = 98
</td>
<td>3*16 + 8*24 + 10*5 = 290
</td>
<td>6*16 + 4*24 + 10*5 = 242
</td></tr>
<tr>
<th colspan="6">Figure 6: summary of mesh representation operations
</th></tr></tbody></table>
<p>In the above table, <i>explicit</i> indicates that the operation can be performed in constant time, as the data is directly stored; <i>list compare</i> indicates that a list comparison between two lists must be performed to accomplish the operation; and <i>pair search</i> indicates a search must be done on two indices. The notation <i>avg(V,V)</i> means the average number of vertices connected to a given vertex; <i>avg(E,V)</i> means the average number of edges connected to a given vertex, and <i>avg(F,V)</i> is the average number of faces connected to a given vertex.
</p><p>The notation "V → f1, f2, f3, ... → v1, v2, v3, ..." describes that a traversal across multiple elements is required to perform the operation. For example, to get "all vertices around a given vertex V" using the face-vertex mesh, it is necessary to first find the faces around the given vertex V using the vertex list. Then, from those faces, use the face list to find the vertices around them. Winged-edge meshes explicitly store nearly all information, and other operations always traverse to the edge first to get additional info. Vertex-vertex meshes are the only representation that explicitly stores the neighboring vertices of a given vertex.
</p><p>As the mesh representations become more complex (from left to right in the summary), the amount of information explicitly stored increases. This gives more direct, constant time, access to traversal and topology of various elements but at the cost of increased overhead and space in maintaining indices properly.
</p><p>Figure 7 shows the connectivity information for each of the four technique described in this article. Other representations also exist, such as half-edge and corner tables. These are all variants of how vertices, faces and edges index one another.
</p><p>As a general rule, face-vertex meshes are used whenever an object must be rendered on graphics hardware that does not change geometry (connectivity), but may deform or morph shape (vertex positions) such as <a href="Real-time_rendering" class="mw-redirect" title="Real-time rendering">real-time rendering</a> of static or morphing objects. Winged-edge or render dynamic meshes are used when the geometry changes, such as in interactive modeling packages or for computing subdivision surfaces. Vertex-vertex meshes are ideal for efficient, complex changes in geometry or topology so long as hardware rendering is not of concern.
</p>
<div class="mw-heading mw-heading2"><h2 id="Other_representations">Other representations</h2></div>
<dt id="streaming_meshes"><dfn>Streaming meshes</dfn></dt> <dd>store faces in an ordered, yet independent, way so that the mesh can be transmitted in pieces. The order of faces may be spatial, spectral, or based on other properties of the mesh. Streaming meshes allow a very large mesh to be rendered even while it is still being loaded.</dd>
<dt id="progressive_meshes"><dfn><a href="Progressive_meshes" title="Progressive meshes">Progressive meshes</a></dfn></dt> <dd>transmit the vertex and face data with increasing levels of detail. Unlike <i>streaming meshes</i>, progressive meshes give the overall shape of the entire object, but at a low level of detail. Additional data, new edges and faces, progressively increase the detail of the mesh.</dd>
<dt id="normal_meshes"><dfn>Normal meshes</dfn></dt> <dd>transmit progressive changes to a mesh as a set of normal displacements from a base mesh. With this technique, a series of textures represent the desired incremental modifications. Normal meshes are compact, since only a single scalar value is needed to express displacement. However, the technique requires a complex series of transformations to create the displacement textures.</dd>
<div class="mw-heading mw-heading2"><h2 id="File_formats">File formats</h2></div>
<p>There exist many different <a href="File_formats" class="mw-redirect" title="File formats">file formats</a> for storing polygon mesh data. Each format is most effective when used for the purpose intended by its creator.
Popular formats include <a href=".fbx" class="mw-redirect" title=".fbx">.fbx</a>, <a href=".dae" class="mw-redirect" title=".dae">.dae</a>, <a href="Wavefront_.obj_file" title="Wavefront .obj file">.obj</a>, and <a href="STL_(file_format)" title="STL (file format)">.stl</a>. A table of some more of these formats is presented below:
</p>
<table class="wikitable sortable">
<tbody><tr>
<th>File suffix</th>
<th>Format name</th>
<th>Organization(s)</th>
<th>Program(s)</th>
<th>Description
</th></tr>
<tr>
<td>.raw</td>
<td>Raw mesh</td>
<td>Unknown</td>
<td>Various</td>
<td>Open, ASCII-only format. Each line contains three vertices, separated by spaces, to form a triangle, like so: X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3
</td></tr>
<tr>
<td><a href=".blend_(file_format)" class="mw-redirect" title=".blend (file format)">.blend</a></td>
<td>Blender File Format</td>
<td><a href="Blender_Foundation" title="Blender Foundation">Blender Foundation</a></td>
<td><a href="Blender_(software)" title="Blender (software)">Blender 3D</a></td>
<td>Open source, binary-only format
</td></tr>
<tr>
<td><a href="FBX" title="FBX">.fbx</a></td>
<td>Autodesk FBX Format</td>
<td><a href="Autodesk" title="Autodesk">Autodesk</a></td>
<td>Various</td>
<td>Proprietary. Binary and ASCII specifications exist.
</td></tr>
<tr>
<td><a href=".3ds" title=".3ds">.3ds</a></td>
<td>3ds Max File</td>
<td><a href="Autodesk" title="Autodesk">Autodesk</a></td>
<td><a href="Autodesk_3ds_Max" title="Autodesk 3ds Max">3ds Max</a></td>
<td>A common but outdated format with hard 16-bit limits on the number of vertices and faces. Neither standardised nor well documented, but used to be a "de facto standard" for data exchange.
</td></tr>
<tr>
<td><a href="COLLADA" title="COLLADA">.dae</a></td>
<td>Digital Asset Exchange (COLLADA)</td>
<td><a href="Sony_Computer_Entertainment" class="mw-redirect" title="Sony Computer Entertainment">Sony Computer Entertainment</a>, <a href="Khronos_Group" title="Khronos Group">Khronos Group</a></td>
<td>N/A</td>
<td>Stands for "<b>COLLA</b>borative <b>D</b>esign <b>A</b>ctivity". A universal format designed to prevent incompatibility.
</td></tr>
<tr>
<td><a href="MicroStation" title="MicroStation">.dgn</a></td>
<td>MicroStation File</td>
<td><a href="Bentley_Systems" title="Bentley Systems">Bentley Systems</a></td>
<td><a href="MicroStation" title="MicroStation">MicroStation</a></td>
<td>There are two dgn file formats: pre-version 8 and version 8 (V8)
</td></tr>
<tr>
<td><a href="Rhinoceros_3D" title="Rhinoceros 3D">.3dm</a></td>
<td>Rhino File</td>
<td>Robert McNeel & Associates</td>
<td><a href="Rhinoceros_3D" title="Rhinoceros 3D">Rhinoceros 3D</a></td>
<td>
</td></tr>
<tr>
<td><a href="AutoCAD_DXF" title="AutoCAD DXF">.dxf</a>, <a href="AutoCAD_DWG" class="mw-redirect" title="AutoCAD DWG">.dwg</a></td>
<td>Drawing Exchange Format</td>
<td><a href="Autodesk" title="Autodesk">Autodesk</a></td>
<td><a href="AutoCAD" title="AutoCAD">AutoCAD</a></td>
<td>
</td></tr>
<tr>
<td><a href="Wavefront_.obj_file" title="Wavefront .obj file">.obj</a></td>
<td>Wavefront OBJ</td>
<td><a href="Wavefront_Technologies" title="Wavefront Technologies">Wavefront Technologies</a></td>
<td>Various</td>
<td>ASCII format describing 3D geometry. All faces' vertices are ordered counter-clockwise, making facet normals implicit. Smooth normals are specified per vertex.
</td></tr>
<tr>
<td><a href="PLY_(file_format)" title="PLY (file format)">.ply</a></td>
<td>Polygon File Format</td>
<td><a href="Stanford_University" title="Stanford University">Stanford University</a></td>
<td>Various</td>
<td>Binary and ASCII
</td></tr>
<tr>
<td><a href="MikuMikuDance" title="MikuMikuDance">.pmd</a></td>
<td>Polygon Movie Maker data</td>
<td>Yu Higuchi</td>
<td><a href="MikuMikuDance" title="MikuMikuDance">MikuMikuDance</a></td>
<td>Proprietary binary file format for storing humanoid model geometry with rigging, material, and physics information.
</td></tr>
<tr>
<td><a href="STL_(file_format)" title="STL (file format)">.stl</a></td>
<td><a href="Stereolithography" title="Stereolithography">Stereolithography</a> Format</td>
<td><a href="3D_Systems" title="3D Systems">3D Systems</a></td>
<td>Many</td>
<td>Binary and ASCII format originally designed to aid in <a href="CNC" class="mw-redirect" title="CNC">CNC</a>.
</td></tr>
<tr>
<td><a href="Additive_Manufacturing_File_Format" class="mw-redirect" title="Additive Manufacturing File Format">.amf</a></td>
<td>Additive Manufacturing File Format</td>
<td><a href="ASTM_International" title="ASTM International">ASTM International</a></td>
<td>N/A</td>
<td>Like the STL format, but with added native color, material, and constellation support.
</td></tr>
<tr>
<td><a href="VRML" title="VRML">.wrl</a></td>
<td>Virtual Reality Modeling Language</td>
<td><a href="Web3D_Consortium" title="Web3D Consortium">Web3D Consortium</a></td>
<td>Web Browsers</td>
<td>ISO Standard 14772-1:1997
</td></tr>
<tr>
<td><a href="VRML" title="VRML">.wrz</a></td>
<td>VRML Compressed</td>
<td><a href="Web3D_Consortium" title="Web3D Consortium">Web3D Consortium</a></td>
<td>Web Browsers</td>
<td>
</td></tr>
<tr>
<td><a href="X3D" title="X3D">.x3d, .x3db, .x3dv</a></td>
<td>Extensible 3D</td>
<td><a href="Web3D_Consortium" title="Web3D Consortium">Web3D Consortium</a></td>
<td>Web Browsers</td>
<td>XML-based, open source, royalty-free, extensible, and interoperable; also supports color, texture, and scene information. ISO Standard 19775/19776/19777
</td></tr>
<tr>
<td><a href="X3D" title="X3D">.x3dz, .x3dbz, .x3dvz</a></td>
<td>X3D Compressed Binary</td>
<td><a href="Web3D_Consortium" title="Web3D Consortium">Web3D Consortium</a></td>
<td>Web Browsers</td>
<td>
</td></tr>
<tr>
<td><a href="Cinema_4D" title="Cinema 4D">.c4d</a></td>
<td>Cinema 4D File</td>
<td><a href="Maxon_Computer_GmbH" title="Maxon Computer GmbH">Maxon</a></td>
<td><a href="CINEMA_4D" class="mw-redirect" title="CINEMA 4D">CINEMA 4D</a></td>
<td>
</td></tr>
<tr>
<td><a href="LightWave_3D" title="LightWave 3D">.lwo</a></td>
<td>LightWave 3D object File</td>
<td><a href="NewTek" title="NewTek">NewTek</a></td>
<td><a href="LightWave_3D" title="LightWave 3D">LightWave 3D</a></td>
<td>
</td></tr>
<tr>
<td>.smb
</td>
<td>SCOREC apf
</td>
<td>RPI SCOREC
</td>
<td><a rel="nofollow" class="external text" href="https://github.com/SCOREC/core">PUMI</a>
</td>
<td>Open source parallel adaptive unstructured 3D meshes for PDE based simulation workflows.
</td></tr>
<tr>
<td>.msh</td>
<td>Gmsh Mesh</td>
<td>GMsh Developers</td>
<td><a href="Gmsh" title="Gmsh">GMsh Project</a></td>
<td>Open source, providing an ASCII mesh description for linear and polynomially interpolated elements in one to three dimensions.
</td></tr>
<tr>
<td>.mesh</td>
<td>OGRE XML</td>
<td>OGRE Development Team</td>
<td>OGRE, purebasic</td>
<td>Open Source. Binary (.mesh) and ASCII (.mesh.xml) format available. Includes data for vertex animation and <a href="Morph_target_animation" title="Morph target animation">Morph target animation</a> (blendshape). <a href="Skeletal_animation" title="Skeletal animation">Skeletal animation</a> data in separate file (.skeleton).
</td></tr>
<tr>
<td>.veg</td>
<td>Vega FEM tetrahedral mesh</td>
<td>Jernej Barbič</td>
<td>Vega FEM</td>
<td>Open Source. Stores a tetrahedral mesh and its material properties for FEM simulation. ASCII (.veg) and binary (.vegb) formats available.
</td></tr>
<tr>
<td>.<a href="Z3d" class="mw-redirect" title="Z3d">z3d</a></td>
<td>Z3d</td>
<td>Oleg Melashenko</td>
<td><a href="Zmodeler" title="Zmodeler">Zanoza Modeler</a></td>
<td>-
</td></tr>
<tr>
<td><a href="VTK" title="VTK">.vtk</a></td>
<td>VTK mesh</td>
<td><a href="VTK" title="VTK">VTK</a>, <a href="Kitware" title="Kitware">Kitware</a></td>
<td><a href="VTK" title="VTK">VTK</a>, <a href="Paraview" class="mw-redirect" title="Paraview">Paraview</a></td>
<td>Open, ASCII or binary format that contains many different data fields, including point data, cell data, and field data.
</td></tr>
<tr>
<td>.l4d</td>
<td>LAI4D drawing</td>
<td>Laboratory of Artificial Intelligence for Design</td>
<td>LAI4D</td>
<td>ASCII data format that describes a hierarchical tree of entities.
</td></tr></tbody></table>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Boundary_representation" title="Boundary representation">Boundary representation</a></li>
<li><a href="Euler_operator_(digital_geometry)" title="Euler operator (digital geometry)">Euler operator</a></li>
<li><a href="Hypergraph" title="Hypergraph">Hypergraph</a></li>
<li><a href="Manifold" title="Manifold">Manifold</a> (a mesh can be manifold or non-manifold)</li>
<li><a href="Mesh_subdivision" class="mw-redirect" title="Mesh subdivision">Mesh subdivision</a> (a technique for adding detail to a polygon mesh)</li>
<li><a href="Polygon_modeling" class="mw-redirect" title="Polygon modeling">Polygon modeling</a></li>
<li><a href="Polygonizer" title="Polygonizer">Polygonizer</a></li>
<li><a href="Simplex" title="Simplex">Simplex</a></li>
<li><a href="T-spline" title="T-spline">T-spline</a></li>
<li><a href="Triangulation_(geometry)" title="Triangulation (geometry)">Triangulation (geometry)</a></li>
<li><a href="Wire-frame_model" title="Wire-frame model">Wire-frame model</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-journalarticle-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-journalarticle_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFLorensenCline1987" class="citation journal cs1">Lorensen, William E.; Cline, Harvey E. (1 August 1987). "Marching cubes: A high resolution 3D surface construction algorithm". <i>ACM SIGGRAPH Computer Graphics</i>. <b>21</b> (4): <span class="nowrap">163–</span>169. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.545.613">10.1.1.545.613</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F37402.37422">10.1145/37402.37422</a>.</cite></span>
</li>
<li id="cite_note-Smith(2006)-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-Smith(2006)_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Smith(2006)_2-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text">Colin Smith, <a rel="nofollow" class="external text" href="http://algorithmicbotany.org/papers/smithco.dis2006.pdf">On Vertex-Vertex Meshes and Their Use in Geometric and Biological Modeling</a>, (<a href="PDF" title="PDF">PDF</a>)</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">Bruce Baumgart, Winged-Edge Polyhedron Representation for Computer Vision. National Computer Conference, May 1975. <cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20050829135758/http://www.baumgart.org/winged-edge/winged-edge.html">"Use of Polyhedra in computer vision"</a>. <i>baumgart.org</i>. May 1975. Archived from <a rel="nofollow" class="external text" href="http://www.baumgart.org/winged-edge/winged-edge.html">the original</a> on 2005-08-29<span class="reference-accessdate">. Retrieved <span class="nowrap">2005-08-29</span></span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text">Tobler & Maierhofer, <a rel="nofollow" class="external text" href="http://wscg.zcu.cz/wscg2006/Papers_2006/Short/E17-full.pdf">A Mesh Data Structure for Rendering and Subdivision. 2006</a>. (<a href="PDF" title="PDF">PDF</a>)</span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="citation mathworld" id="Reference-Mathworld-Simplicial_complex"><cite id="CITEREFWeisstein" class="citation web cs1"><a href="Eric_W._Weisstein" title="Eric W. Weisstein">Weisstein, Eric W.</a> <a rel="nofollow" class="external text" href="https://mathworld.wolfram.com/SimplicialComplex.html">"Simplicial complex"</a>. <i><a href="MathWorld" title="MathWorld">MathWorld</a></i>.</cite></span></li>
<li><span class="citation mathworld" id="Reference-Mathworld-Triangulation"><cite id="CITEREFWeisstein" class="citation web cs1"><a href="Eric_W._Weisstein" title="Eric W. Weisstein">Weisstein, Eric W.</a> <a rel="nofollow" class="external text" href="https://mathworld.wolfram.com/Triangulation.html">"Triangulation"</a>. <i><a href="MathWorld" title="MathWorld">MathWorld</a></i>.</cite></span></li>
<li><a rel="nofollow" class="external text" href="http://www.openmesh.org/">OpenMesh</a> open source half-edge mesh representation.</li>
<li><a rel="nofollow" class="external text" href="https://www.pmp-library.org/">Polygon Mesh Processing Library</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Mesh_generation50" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Mesh_generation50" style="font-size:114%;margin:0 4em"><a href="Mesh_generation" title="Mesh generation">Mesh generation</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Types_of_mesh" title="Types of mesh">Types of mesh</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul>
<li><a href="Triangle_mesh" title="Triangle mesh">Triangle mesh</a></li>
<li><a href="Volume_mesh" class="mw-redirect" title="Volume mesh">Volume mesh</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Methods</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Laplacian_smoothing" title="Laplacian smoothing">Laplacian smoothing</a></li>
<li><a href="Parallel_mesh_generation" title="Parallel mesh generation">Parallel mesh generation</a></li>
<li><a href="Stretched_grid_method" title="Stretched grid method">Stretched grid method</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Chew's_second_algorithm" class="mw-redirect" title="Chew's second algorithm">Chew's second algorithm</a></li>
<li><a href="Image-based_meshing" title="Image-based meshing">Image-based meshing</a></li>
<li><a href="Marching_cubes" title="Marching cubes">Marching cubes</a></li>
<li><a href="Marching_tetrahedra" title="Marching tetrahedra">Marching tetrahedra</a></li>
<li><a href="Principles_of_Grid_Generation" class="mw-redirect" title="Principles of Grid Generation">Principles of Grid Generation</a></li>
<li><a href="Regular_grid" title="Regular grid">Regular grid</a></li>
<li><a href="Ruppert's_algorithm" class="mw-redirect" title="Ruppert's algorithm">Ruppert's algorithm</a></li>
<li><a href="Tessellation_(computer_graphics)" title="Tessellation (computer graphics)">Tessellation</a></li>
<li><a href="Unstructured_grid" title="Unstructured grid">Unstructured grid</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-28" href="https://en.wikipedia.org/wiki/?title=Polygon_mesh&oldid=1303011891">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>